package com.cvpoc.hibernate.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import org.springframework.beans.BeanUtils;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.cvpoc.dto.CollaborateurDTO;
import com.cvpoc.hibernate.dao.CollaborateurDao;
import com.cvpoc.model.Collaborateur;

public class CollaborateurDaoImpl extends HibernateDaoSupport implements
		CollaborateurDao {

	
	@Override
	public CollaborateurDTO findCollaborateurById(int id) {
		Collaborateur collaborateur = (Collaborateur) getHibernateTemplate().get(
				Collaborateur.class, id);

		CollaborateurDTO collaborateurDTO = new CollaborateurDTO();

		BeanUtils.copyProperties(collaborateur, collaborateurDTO);

		return collaborateurDTO;
	}

	@Override
	public List<CollaborateurDTO> findAllCollaborateur() {
		List<CollaborateurDTO> collaborateurDTOs = new ArrayList<CollaborateurDTO>();
		CollaborateurDTO target = null;
		
		List<Collaborateur> collaborateurs = getHibernateTemplate().loadAll(Collaborateur.class);

		for (Collaborateur collaborateur2 : collaborateurs) {
			target = new CollaborateurDTO();
			BeanUtils.copyProperties(collaborateur2, target);
			collaborateurDTOs.add(target);
		}

		return collaborateurDTOs;
	}

	@Override
	public int createCollaborateur(CollaborateurDTO collaborateurDTO) {
		Collaborateur collaborateur = new Collaborateur();

		BeanUtils.copyProperties(collaborateurDTO, collaborateur);
		int idCreate = (Integer) getHibernateTemplate().save(collaborateur);
		
		return idCreate;
	}

	@Override
	public void updateCollaborateur(CollaborateurDTO collaborateurDTO) {
		Collaborateur collaborateur = new Collaborateur();

		BeanUtils.copyProperties(collaborateurDTO, collaborateur);
		getHibernateTemplate().merge(collaborateur);
	}

	@Override
	public void deleteCollaborateur(int id) {
		Collaborateur collaborateur = (Collaborateur) getHibernateTemplate().load(
				Collaborateur.class, id);
		getHibernateTemplate().delete(collaborateur);
	}

}
